/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package GUI.Cadastro;

import Facade.Facade;
import Objetos.CondicaoePagamento;
import Objetos.Usuario;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Calendar;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;

/**
 *
 * @author celio
 */
public final class CadastroFormaPag extends JPanel {

    JLabel descricao, parcelas;
    JTextField tDescricao, tParcelas;
    JButton cadastrar, alterar, limpar, sair;
    JTable condicoes;
    JScrollPane scroller;
    Calendar data;
    Facade fa;
    CondicaoePagamento cp;

    public CadastroFormaPag(final Usuario usu) {

        JLabel tela = new JLabel("... :::   Cadastro de Condições de Pagamento   ::: ...");
        tela.setBounds(400, 10, 500, 20);
        add(tela);

        data = Calendar.getInstance();

        descricao = new JLabel("Descrição: ");
        tDescricao = new JTextField(10);

        parcelas = new JLabel("Parcelas: ");
        tParcelas = new JTextField(45);

        cadastrar = new JButton("Cadastrar");
        alterar = new JButton("Alterar");
        limpar = new JButton("Limpar");
        sair = new JButton("Sair");

        descricao.setBounds(10, 20, 180, 20);
        tDescricao.setBounds(120, 20, 200, 20);

        parcelas.setBounds(10, 80, 100, 20);
        tParcelas.setBounds(120, 80, 180, 20);

        cadastrar.setBounds(20, 130, 100, 20);
        alterar.setBounds(350, 450, 100, 20);
        limpar.setBounds(120, 130, 100, 20);
        sair.setBounds(220, 130, 100, 20);

        add(descricao);
        add(tDescricao);

        add(parcelas);
        add(tParcelas);

        add(cadastrar);
        add(alterar);
        add(limpar);
        add(sair);

        alterar.setEnabled(false);
        atualizaTabela(usu);

        cadastrar.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {

                cp = new CondicaoePagamento();
                fa = new Facade();

                cp.setDescricao(tDescricao.getText());
                cp.setParcelas(tParcelas.getText());
                cp.setData_inclusao(Funcoes.funcoes.paraInserirData(data.getTime().toLocaleString().substring(0, 10)));
                fa.adicionar_CondicaoePagamento(cp, usu);

                tDescricao.setText("");
                tParcelas.setText("");

                atualizaTabela(usu);

            }
        });

        condicoes.addMouseListener(new MouseListener() {

            @Override
            public void mouseClicked(MouseEvent e) {

                fa = new Facade();
                cp = fa.procurar_CondicaoePagamento(condicoes.getModel().getValueAt(condicoes.getSelectedRow(), 0).toString(),usu);
                //JOptionPane.showMessageDialog(null, car.getModelo());
                tDescricao.setText(cp.getDescricao());
                tParcelas.setText(cp.getParcelas());
                alterar.setEnabled(true);
                cadastrar.setEnabled(false);

            }

            @Override
            public void mousePressed(MouseEvent e) {
                //throw new UnsupportedOperationException("Not supported yet.");
            }

            @Override
            public void mouseReleased(MouseEvent e) {
                // throw new UnsupportedOperationException("Not supported yet.");
            }

            @Override
            public void mouseEntered(MouseEvent e) {
                //throw new UnsupportedOperationException("Not supported yet.");
            }

            @Override
            public void mouseExited(MouseEvent e) {
                           //throw new UnsupportedOperationException("Not supported yet.");

            }

        });

        alterar.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {

                fa = new Facade();
                cp = fa.procurar_CondicaoePagamento(condicoes.getModel().getValueAt(condicoes.getSelectedRow(), 0).toString(),usu);
                CondicaoePagamento alterado = new CondicaoePagamento();

                alterado.setDescricao(tDescricao.getText());
                alterado.setParcelas(tParcelas.getText());

                fa.alterar_CondicaoePagamento(cp, alterado, usu);

                tDescricao.setText("");
                tParcelas.setText("");
                alterar.setEnabled(false);
                cadastrar.setEnabled(true);
                atualizaTabela(usu);
            }
        });

        limpar.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

                tDescricao.setText("");
                tParcelas.setText("");
                alterar.setEnabled(false);
                cadastrar.setEnabled(true);

            }
        });

        sair.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {

                setVisible(false);
            }
        });

        setLayout(null);
        setBackground(Color.LIGHT_GRAY);
        setBorder(BorderFactory.createBevelBorder(1, Color.DARK_GRAY, Color.DARK_GRAY));
        setSize(800, 600);
        setVisible(true);
        revalidate();
        repaint();
    }

    public void atualizaTabela(Usuario usu) {

        try {
            remove(scroller);

        } catch (NullPointerException e) {
        }
        fa = new Facade();
        condicoes = fa.consultaTodos_CondicaoePagamento(usu);
        condicoes.setFont(new Font("Times New Roman", Font.BOLD, 14));
        scroller = new JScrollPane(condicoes, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        scroller.setBounds(350, 50, 720, 400);
        add(scroller);
    }

}
